package com.hs.gateway.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.cloud.client.loadbalancer.LoadBalancerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

import java.util.Collections;

/**
 * @Description: 之所以要单独为RestTemplate进行增强的原因是，@LoadBalancer注解是在
 *          所有非懒加载单例bean创建完成之后通过SmartInitializingSingleton机制在对RestTemplate对象进行增强，
 *          但是我现在需要在bean初始化的过程中需要发送请求，那么就只能是我们自己对RestTemplate对象进行增强了
 * @Author 胡尚
 * @Date: 2024/7/26 17:20
 */
@Configuration
public class RibbonConfig {

    @Autowired
    private LoadBalancerClient loadBalancer;

    @Bean
    public RestTemplate restTemplate(){
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.setInterceptors(
                Collections.singletonList(
                        new LoadBalancerInterceptor(loadBalancer)));

        return restTemplate;
    }
}
